package cn.honqun.tinycms.service;

import cn.honqun.tinycms.common.dto.Page;
import cn.honqun.tinycms.domain.entity.Role;
import cn.honqun.tinycms.domain.entity.User;
import cn.honqun.tinycms.domain.vo.ChangePwdVO;
import cn.honqun.tinycms.domain.vo.LoginVO;
import cn.honqun.tinycms.domain.vo.UserVO;

import java.util.List;

public interface UserService {
    /**
     * 创建用户
     */
    User create(User user);

    /**
     * 更新用户，不会更新username, password
     */
    User update(User user);

    /**
     * 根据用户名、真实姓名、角色查询
     */
    Page<User> select(Page<User> page, UserVO userVO);

    /**
     * 启用账号
     */
    void enabled(User user);

    /**
     * 禁用账号
     */
    void disabled(User user);

    /**
     * 修改密码
     */
    void changePassword(ChangePwdVO changePwdVO);

    /**
     * 根据ID查询
     */
    User selectById(Long id);

    /**
     * 根据用户名查询
     */
    User selectByUsername(String username);

    /**
     * 根据用手机号查询
     */
    User selectByPhoneNum(String phoneNum);

    /**
     * 列出用户的角色
     */
    List<Role> selectRoles(User user);

    /**
     * 为用户分配角色
     */
    User grantRoles(User user, List<Role> roles);

    /**
     * 用户登录
     */
    UserVO login(LoginVO loginVO);
}
